/**
 * 返回类型 方法名称(参数1, 参数2,...){
 *    方法体
 *    return 返回值;
 * }
 */
main(List<String> args) {
  // print(printUserInfo2("张三", age: 30, sex: "女"));

  fun2(fun1);
}

// 定义带可选参数的方法
String printUserInfo1(String username, [int age, String sex = "男"]) {
  if (age != null) {
    return "姓名：$username---性别：$sex---年龄：$age";
  }
  return "姓名：$username---年龄：保密";
}

// 定义命名参数的方法
String printUserInfo2(String username, {int age, String sex = "男"}) {
  if (age != null) {
    return "姓名：$username---性别：$sex---年龄：$age";
  }
  return "姓名：$username---年龄：保密";
}

// 定义将方法作为参数的方法
fun1() {
  print("一个方法");
}

fun2(fun) {
  fun();
}
